﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;

namespace Accountability4net.FileMonengineProvider
{
    public class XmlUtility
    {
        public static XmlAttribute CreateAttribute(XmlNode node, string name, object value)
        {
            XmlAttribute attribute = node.OwnerDocument.CreateAttribute(name);
            attribute.Value = value.ToString();
            node.Attributes.Append(attribute);
            return attribute;
        }

        public static XmlElement CreateTextElement(XmlNode node, string name, string value)
        {
            StringBuilder sb = new StringBuilder();
            using (XmlTextWriter writer = new XmlTextWriter(new StringWriter(sb)))
            {
                writer.WriteString(value);
            }
            XmlElement element = node.OwnerDocument.CreateElement(name, node.NamespaceURI);
            element.InnerText = sb.ToString();
            node.AppendChild(element);
            return element;
        }

        public static XmlElement CreateImageElement(XmlNode node, string name, Image image)
        {
            XmlElement imageElement;
            using (var stream = new MemoryStream())
            {
                image.Save(stream, ImageFormat.Png);
                byte[] imageBytes = stream.ToArray();
                String imageBase64String = Convert.ToBase64String(imageBytes);
                imageElement = CreateTextElement(node, name, imageBase64String);
            }
            return imageElement;
        }

        public static Image ReadImageElement(XmlElement node)
        {
            Image image;
            byte[] imageBytes = Convert.FromBase64String(node.InnerText);
            using (var stream = new MemoryStream(imageBytes))
            {
                image = Bitmap.FromStream(stream);
                return image;
            }
        }

    }
}
